package primalgorithms.other;

public class _01HammingWeight {
    /**
     * 请注意，在某些语言（如 Java）中，没有无符号整数类型。
     * 在这种情况下，输入和输出都将被指定为有符号整数类型，并且不应影响您的实现，因为无论整数是有符号的还是无符号的，其内部的二进制表示形式都是相同的。
     * 在 Java 中，编译器使用二进制补码记法来表示有符号整数。
     * 二进制表达式中 1 的位数 ==> 汉明重量
     * 输入：11111111111111111111111111111101
     * 输出：31
     * 解释：输入的二进制串 11111111111111111111111111111101 中，共有 31 位为 '1'。
     */
    // you need to treat n as an unsigned value
    public static int hammingWeight(int n) {
        /**
         * Integer.toBinaryString(value): 10100010000
         * Integer.bitCount(value):  3
         */
        return Integer.bitCount(n);
    }
}
